package com.scholarship.modules.backend.mapper;

import com.scholarship.modules.backend.dao.ListRewardTable;
import com.scholarship.modules.backend.dao.RewardTableSearch;
import com.scholarship.modules.backend.entity.RewardTable;
import com.scholarship.modules.backend.dao.RewardTableQuery;
import com.scholarship.modules.backend.entity.StudentScore;
import org.springframework.stereotype.Repository;

import java.util.LinkedHashMap;
import java.util.List;

/**
 * @author zhz
 * @date 2021/5/21 11:07
 * 备注：奖学金表的相应操作
 */
@Repository
public interface RewardTableMapper {

    /**
     * 列出表的所有信息
     * @param listRewardTable 包含表id,表名，表属性，分页
     * @return 返回一个HashMap的链表
     */
    List<LinkedHashMap<String,Object>> listRewardTableByTableId(ListRewardTable listRewardTable);
    //根据查询条件列出表的所有信息
    List<LinkedHashMap<String,Object>>listRewardTableByQuery(ListRewardTable listRewardTable);
    //根据tableId列出表头信息
    List<String> listTitleByTableId(Integer id);
    //根据tableId列出属性名
    List<String> listAttributeByTableId(Integer id);
    //列出所有表id和对应的表命
    List<RewardTable> listRewardTable();
    //给学生批改成绩
    Integer updateTableScore(StudentScore studentScore);
    //更新学生分数
    Integer updateStuScore();
    //根据tableId返回数据库表名
    String getTableNameById(Integer id);
    //根据tableId返回真实表名
    String getRewardTableNameById(Integer id);
    //根据表id列出表具有的属性名和中文名
    List<LinkedHashMap<String,String>>listRewardTableAttribute(Integer id);
    //根据表id判断是否需要文件上传
    Integer isUploadFile(Integer id);
    //驳回学生提交给予学生反馈
    Integer giveStudentFeedback(String userId,Integer tableId,String feedback) throws Exception;
    //批改单个学生奖学金申请
    Integer giveStudentScore(String userId,Integer tableId,Float score) throws Exception;
    //获得某个表学生提交的数量
    Long getSumTableByTableId(ListRewardTable listRewardTable);
    //根据搜索查询奖学金申请列表
    List<LinkedHashMap<String,Object>>listRewardTableBySearch(ListRewardTable listRewardTable);
    //根据学号更新学生总分
    Integer updateStuScoreByUserId(String userId);
//    根据tableName返回id
    Integer getTableIdByName(String tableName);
    //进行三选二的判断
    Integer threeChoiceTwo();
}
